#ifndef __STM32_FLASH_H__
#define __STM32_FLASH_H__

#include "util.h"

void flash_init(void);

byte flash_status(void);

// 24位地址
void flash_read(int address, __out__ byte rd[], int len);

// 24位地址
// 先擦除在写数据，之前的数据会丢失
void flash_write0(int address, __in__ byte wd[], int len);

// 写入一字节
void flash_write_byte(int address, __in__ byte data);

// 读取一字节
byte flash_read_byte(int address);

// 为了任意位置写入数据不丢失 new API
// 4 MB max
// 栈空间太小 设置成了 5KB
void flash_write(int address, __in__ byte data[], int len);

void flash_clear_sector(int address);

void flash_remove(int address, int len);

int flash_capacity(void);

#endif
